# @author zfd
# @date 2022年12月13日 16:08
# @desc 各种运算符号

print("算术运算符号-----------------")
print(1 + 1)
print(2 - 1)
print(3 * 3)
print(4 / 2)  # 取商，结果是浮点数
print(5 // 2)  # 整除取商，结果是整数
print(5 % 1)  # 取余数
print(2 ** 2)  # m幂运算
print(3 ** 2)

print("算术运算符号-正负数整除，一正一负向下取整----------------")
print(9 // 4)  # 2
print(-9 // -4)  # 2
print(-9 // 4)  # -3
print(9 // -4)  # -3
print(-9 % 4)  # 3
print(9 % -4)  # -3

print('赋值运算，支持组合运算赋值-------------------')
a = b = c = 20
a += 1
a -= 1
a *= 1
a /= 1
a //= 1
print('赋值运算，支持解包赋值-------------------')
a, b, c = 20, 30, 40
print(a, b, c)
a, b, c = (1, 2, 3)
print(a, b, c)
a, b, c = [4, 5, 6]
print(a, b, c)

print('比较运算符号，== 比较值，is比较对象内存地址--')
a = '10'
b = '10'
print(id(a), id(b))
print(a == b)
print(a is b)

print('布尔运算 and or not-------------------')
a, b = 1, 2
print(a == 12 and b == 100)
print(a == 1 or b == 100)
t = True
f = False
print(not t, not f)

print('位运算 按位操作或是或是移位-------------------')
# 4 = 0000 0000 0000 0100
# 8 = 0000 0000 0000 1000
print(4&8)  #按位与& ，同为1时结果为1
print(4|8)   #按位或| ，同为0时结果为0
print(4<<1)  #向左移动1位(移动一个位置) 相当于乘以2
print(4<<2)  #向左移动2位(移动2个位置)

print(4>>1)  #向右移动1位，相当于除以2
print(4>>2) #向右移动2位，相当于除以4
